字符串的扩展

1.字符串的遍历器接口

  • 字符串可以被for...of循环遍历。

与es5的比较
for循环虽可以遍历字符串,但不能识别大于oxFFFF的编码;

2.位置 --> 字符/码点

根据指定位置返回对应的字符和码点

es5:

  • charCodeAt() 码点
  • charAt() 字符

es6: ---优势,能识别大于oxFFFF的编码;

  • codePointAt()--返回码点
  • at()--返回字符 (目前es6还未实现,需要通过垫片库实现)
let hhh='fdf';
hhh.charAt(1);
// "d"
hhh.charCodeAt(1);
// 100
hhh.codePointAt(1);
// 100
hhh.at(1)
// Uncaught TypeError: hhh.at is not a function

3.码点 --> 字符

根据码点返回对应的字符

  • es5:String.fromCharCode(0x20BB7); 定义在String对象上
  • es6:String.fromCodePoint();定义在字符串的实例对象上。--能识别32位字符。即能识别Unicode编号大于oxFFFF;
String.fromCharCode(100)
"d"
String.fromCodePoint(0x20BB7)
// "?"
String.fromCodePoint(100,100,100)
// ddd

4.查询字符串是否包含某个字符

es5:

  • indexOf()

es6:

  • includes():返回布尔值,表示是否找到了参数字符串。
  • startsWith():返回布尔值,表示参数字符串是否在原字符串的头部。
  • endsWith():返回布尔值,表示参数字符串是否在原字符串的尾部

都支持第二个参数,表示开始搜索的位置。

let s = 'Hello world!';

s.startsWith('world', 6) // true
s.endsWith('Hello', 5) // true
s.includes('Hello', 6) // false

5.repeat(n)

返回一个新字符串,表示将原字符串重复n次。
参数如果是小数,会被取整

'x'.repeat(3) // "xxx"
'hello'.repeat(2) // "hellohello"
'na'.repeat(0) // ""
'na'.repeat(2.9) // "nana"
'na'.repeat(Infinity)
// RangeError
'na'.repeat(-1)
// RangeError
参数NaN等同于 0

6.字符串补全长度的功能

padStart(minlength,string)用于头部补全,
padEnd(minlength,string)用于尾部补全
用途:

  • 提示字符串格式;
  • 为数值补全指定位数
'x'.padStart(5, 'ab') // 'ababx'
'x'.padStart(4, 'ab') // 'abax'
'x'.padEnd(5, 'ab') // 'xabab'
'x'.padEnd(4, 'ab') // 'xaba'
'xxx'.padStart(2, 'ab') // 'xxx'
'xxx'.padEnd(2, 'ab') // 'xxx'
'x'.padStart(4) // '   x'
'x'.padEnd(4) // 'x   '
'12'.padStart(10, 'YYYY-MM-DD') // "YYYY-MM-12"
'09-12'.padStart(10, 'YYYY-MM-DD') // "YYYY-09-12"

katara1109
468 声望22 粉丝

天助自助者